Software developers (developers) build middleware applications (applications) to enable computers to communicate with one another and perform desired tasks. When building a middleware application, a developer must choose an implementation technology to use to execute the application. Possible implementation technologies include JAVA 2 ENTERPRISE EDITION™ (J2EE ®), WEB SERVICES™, JAVABEANS™, and MICROSOFT®.NET®. Persons of ordinary skill in the art are aware of implementation technologies other than those listed above. Each implementation technology defines specific constructs and metadata that control the behavior and features of the application. In other words, each implementation technology contains features that make that implementation technology useful in specific situations. Thus, a developer must be familiar with the various features offered by each implementation technology in order to make an informed decision regarding which implementation technology to use to execute the application. Moreover, once a developer has tailored his source code to a particular implementation technology, he is locked into that implementation technology.
As the various implementation technologies have become increasingly sophisticated, the different implementation technologies have begun to offer similar functionality. Today, almost all of the implementation technologies have been expanded to include the features most commonly used by developers. Examples of these common functions include the ability of the implementation technology to be transactional, secure, remotely accessible, and auditable. Even though the various implementation technologies offer similar features, each implementation technology expresses these common functions in different ways. Thus, a developer has more options in selecting an implementation technology with the desired features, but the developer still must understand how to implement the features in the selected implementation technology.
Because many of the implementation technology features are the same, the developer can select any one of a plurality of implementation technologies to execute the application. Thus, the features offered by an implementation technology should no longer be the driving factor behind the selection of a particular implementation technology. The selection of an implementation technology to execute an application should instead be focused on the business logic of the application by allowing a developer to specify the desired functionality and have the implementation technology automatically selected based on the developer's specification. Therefore, a need exists for a method for allowing a developer to create an application in which the implementation technology is automatically selected for the developer based on the desired functionality specified by the developer.
The size of the source code required to create the applications has grown as the demand for more powerful applications has increased. Likewise, companies have to spend large amounts of money developing the source code for these applications. In order to recuperate the expenses associated with developing the source code, companies have created source code that is applicable to a variety of different purposes. As such, the source code may need to be executed using a variety of different implementation technologies. Currently, a developer specifies the functionality desired in an application in a manner specific to the implementation technology. The source code will have to be implementation technology independent if the source code is to be seamlessly executed by a plurality of different implementation technologies. Consequently, a need exists for a method for allowing a developer to specify the desired functionality in an application that is independent of a specific type of implementation technology so that the application source code can be executed by a plurality of implementation technologies.